#include "head.h"

// 顺序表的创建
void arr_init_Sql_List(Sql_list_array *L)
{
    // Sql_list_array *L = (Sql_list_array *)malloc(sizeof(Sql_list_array));
    // if (L == NULL)
    // {
    //     ERRLOG("顺序表创建失败\n");
    //     return NULL;
    // }
    memset(L->data, 0, ARR_MAX_SIZE * sizeof(f_data));
    L->len = 0;
}

// 顺序表的插入
int arr_insert(Sql_list_array *L, f_data data)
{
    if (L == NULL)
    {
        ERRLOG("顺序表为NULL\n");
        return -1;
    }
    if (L->len >= ARR_MAX_SIZE)
    {
        printf("顺序表已满\n");
        return -1;
    }
    if (NULL == L->data)
    {
        ERRLOG("顺序表空间为NULL\n");
    }

    L->data[L->len] = data;
    L->len++;
    return 0;
}

// 顺序表的删除
f_data pos_del_list(Sql_list_array *L, int id)
{
    f_data del_data = {0};
    int num;
    if (L == NULL)
    {
        ERRLOG("顺序表为NULL\n");
        return del_data;
    }
    if (L->len == 0)
    {
        ERRLOG("表内无数据\n");
        return del_data;
    }
    num = arr_find_by_name(L, id);
    del_data = L->data[L->len];

    //
    if (num == L->len)
    {
        L->len--;
        return del_data;
    }
    for (int i = num; i < L->len; i++)
    {
        L->data[i] = L->data[i + 1];
    }

    L->len--;
    return del_data;
}

// 顺序表的遍历
void printf_Sql_List(Sql_list_array *L)
{
    if (L == NULL)
    {
        return;
    }
    if (L->len == 0)
    {
        return;
    }

    for (size_t i = 0; i < L->len; i++)
    {
        printf("航班班次:%-8d", L->data[i].id);                                              // 航班班次
        printf("飞机机型:%-16s", L->data[i].flighttype);                                     // 飞机机型
        printf("航班起点站:%-12s", L->data[i].startcity);                                    // 航班起点站
        printf("航班终点站:%-12s", L->data[i].arrivecity);                                   // 航班终点站
        printf("起飞时间:%02d:%02d\t", L->data[i].starttime[0], L->data[i].starttime[1]);    // 起飞时间
        printf("到达时间:%02d:%02d   ", L->data[i].arrivetime[0], L->data[i].arrivetime[1]); // 到达时间
        printf("飞行时间: %-10s\t", L->data[i].flytime);                                     // 飞行时间
        printf("票价:%-8d", L->data[i].value);                                               // 票价
        printf("额定载客量:%-8d", L->data[i].maxNUM);                                        // 额定载客量
        printf("剩余座位数量: %-10d", L->data[i].leftbuyersa);                               // 剩余座位数量
        printf("是否起飞:%c\n", L->data[i].whetherfly);                                      // 是否起飞
    }
    return;
}
// 顺序表的查找
int arr_find_by_name(Sql_list_array *L, int id)
{
    if (L == NULL)
    {
        printf("顺序表 为 NULL\n");
        exit(-1);
    }
    for (int i =  0; i <L->len; i++)
    {

        if (L->data[i].id == id)
        {
            return i;
        }
    }

    return -1;
}

// 顺序表的销毁
void Destroy_Sql_List(Sql_list_array **L);